In existing computing systems, the ability to upgrade or to have flexibility in system configurations is critical. By design, these systems have modular components which allow many variations in combinations and numbers of subsystems. In order for the system to function as a complete unit, the system controller or processor should be able to recognize and distinguish between the individual subsystems. One way to accomplish this recognition is to inform the controller manually. In this case, the user would have to inform the system of what subsystems were present and give each subsystem an identification. This is tedious for the user and is prone to mistakes. Also, it has to be repeated every time the system configuration changes.
A second method is to give the system a way to identify each subsystem automatically. This usually involves some sort of presence detection using one or more electrical connections which distinguish between subsystems. A common example is 72 pin DRAM SIMMs. These parts typically have four presence detect signals which inform the system of the type and speed of memory which is installed. This sort of presence detect scheme works well when each subsystem has its own, dedicated set of detect circuits. The system can check each of these individual circuits for the presence of a subsystem. This method does not work, however, when these circuits are bussed together. In this case, a more sophisticated method is required.
When several subsystems are bussed together, each subsystem typically needs unique identifiers or addresses which the controller can use to distinguish between subsystems. To make the subsystems unique, the user may have to set jumpers or switches on the subsystems to configure them for proper operation. A problem arises, however, if the design requires no user intervention and that the subsystems be identical, i.e., the subsystem has no inherent unique identifier.